#include <bits/stdc++.h>
using namespace std;
struct segt{
    struct node{
        int l,r;long long mx;
    }seg[800005];
    void build(int u,int l,int r){
        seg[u].l=l;seg[u].r=r;seg[u].mx=-1e17;
        if(l>=r)return;
        int mid=(l+r)/2;
        build(u*2,l,mid);
        build(u*2+1,mid+1,r);
    }
    void upd(int u,int ind,long long x){
        if(seg[u].l>ind or seg[u].r<ind)return;
        if(seg[u].l==seg[u].r){
            seg[u].mx=max(seg[u].mx,x);
            return;
        }
        upd(u*2,ind,x);
        upd(u*2+1,ind,x);
        seg[u].mx=max(seg[u*2].mx,seg[u*2+1].mx);
    }
    long long qry(int u,int l,int r){
        if(seg[u].l>r or seg[u].r<l)return -1e17;
        if(seg[u].l>=l and seg[u].r<=r)return seg[u].mx;
        return max(qry(u*2,l,r),qry(u*2+1,l,r));
    }
}seg1;
int arr[200005];
int arr1[200005];
long long qz_sm[200005];
int main(){
    freopen("color.in","r",stdin);
    freopen("color.out","w",stdout);
    int tc;
    cin>>tc;
    while(tc--){
        int n;
        cin>>n;
        memset(arr,0,sizeof(arr));
        memset(qz_sm,0,sizeof(qz_sm));
        memset(arr1,0,sizeof(arr1));
        for(int i=1;i<=n;i++)cin>>arr[i];
        map<int,int>lsh;
        for(int i=1;i<=n;i++)lsh[arr[i]]=1;
        int To=0;
        for(auto &it:lsh)it.second=++To;
        for(int i=1;i<=n;i++)arr1[i]=lsh[arr[i]];
        seg1.build(1,0,To);
        for(int i=1;i<=n;i++){
            qz_sm[i]=qz_sm[i-1];
            if(arr[i]==arr[i+1])qz_sm[i]+=arr[i];
        }
        seg1.upd(1,0,0);
        for(int i=1;i<=n;i++){
            long long mx1=max(max(seg1.qry(1,0,arr1[i+1]-1),seg1.qry(1,arr1[i+1]+1,To)),seg1.qry(1,arr1[i+1],arr1[i+1])+arr[i+1])+qz_sm[i-1];
            seg1.upd(1,arr1[i],mx1-qz_sm[i]);
            if(i==n)cout<<mx1<<endl;
        }
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}